package com.sisgesbyte.web.managedBean.seguridad;

import java.io.Serializable;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.sisgesbyte.common.ConstantesInternasSistema;
import com.sisgesbyte.common.Validaciones;
import com.sisgesbyte.web.beanUtil.UsuarioActivoBean;


@ManagedBean
@ViewScoped
public class ManejoSessionMBean implements Serializable {

	@Inject
	private Validaciones validaciones;
	
	private static final long serialVersionUID = 1L;
	
	
	public void cerrarSession(){
		try{
			HttpSession session = (HttpSession) FacesContext.getCurrentInstance()
				    .getExternalContext().getSession(true);
				    session.invalidate();
				    
		    HttpServletResponse response = 
		            (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
		    
		    response.sendRedirect(ConstantesInternasSistema.PATH_URL_PAGES + "login.xhtml");
		    
		}catch(Exception e){
			System.out.println("Ocurrio un Error al Cerrar Session " + e);
		}
	}

	public void validarExisteSession(){

		boolean activo = false;
		for(UsuarioActivoBean user : validaciones.listaUsuarios){
			if(user.getCodSession().equals(ObtenerIdSession())){
				activo=true;
				System.out.println("Si esta activo");
			}
			
		}
		
		if(!activo){
			System.out.println("Ingresa a cerrar session");
			cerrarSession();
		}
	}
	
	public String ObtenerIdSession() {
		FacesContext fCtx = FacesContext.getCurrentInstance();
		HttpSession session = (HttpSession) fCtx.getExternalContext().getSession(false);
		String sessionId = session.getId().replace(".undefined", "");
		return sessionId;
	}
}
